package main.java.common.util;

import java.math.BigDecimal;

import org.apache.commons.lang3.StringUtils;

public class CommonUtil {
	/*
	 * 除法
	 */
	public static BigDecimal divide(String arg1, String arg2) {
		if(StringUtils.isEmpty(arg1)) {
			arg1 = "0.0";
		}
		if(StringUtils.isEmpty(arg2)) {
			arg2 = "0.0";
		}
		BigDecimal big3 = new BigDecimal("0.00");
		if(Double.parseDouble(arg2) != 0) {
			BigDecimal big1 = new BigDecimal(arg1);
			BigDecimal big2 = new BigDecimal(arg2);
			big3 = big1.divide(big2, 2, BigDecimal.ROUND_HALF_EVEN);
		}
		return big3;
	}
	
	/*
	 * 乘法
	 */
	public static BigDecimal mul(String arg1, String arg2) {
		if(StringUtils.isEmpty(arg1)) {
			arg1 = "0.0";
		}
		if(StringUtils.isEmpty(arg2)) {
			arg2 = "0.0";
		}
		BigDecimal big1 = new BigDecimal(arg1);
		BigDecimal big2 = new BigDecimal(arg2);
		BigDecimal big3 = big1.multiply(big2);
		return big3;
	}
	
	/*
	 * 减法
	 */
	public static BigDecimal sub(String arg1, String arg2) {
		if(StringUtils.isEmpty(arg1)) {
			arg1 = "0.0";
		}
		if(StringUtils.isEmpty(arg2)) {
			arg2 = "0.0";
		}
		BigDecimal big1 = new BigDecimal(arg1);
		BigDecimal big2 = new BigDecimal(arg2);
		BigDecimal big3 = big1.subtract(big2);
		return big3;
	}
	
	/*
	 * 加法
	 */
	public static BigDecimal add(String arg1, String arg2) {
		if(StringUtils.isEmpty(arg1)) {
			arg1 = "0.0";
		}
		if(StringUtils.isEmpty(arg2)) {
			arg2 = "0.0";
		}
		BigDecimal big1 = new BigDecimal(arg1);
		BigDecimal big2 = new BigDecimal(arg2);
		BigDecimal big3 = big1.add(big2);
		return big3;
	}
	
	/*
	 * 加法2
	 */
	public static String add2(String arg1, String arg2) {
		if(StringUtils.isEmpty(arg1)) {
			arg1 = "0.0";
		}
		if(StringUtils.isEmpty(arg2)) {
			arg2 = "0.0";
		}
		BigDecimal big1 = new BigDecimal(arg1);
		BigDecimal big2 = new BigDecimal(arg2);
		BigDecimal big3 = big1.add(big2);
		return big3.toString();
	}
	
	/*
	 * 四舍五入保留n位小数
	 */
	public static String setScare(BigDecimal arg, int scare) {
		BigDecimal big = arg.setScale(scare, BigDecimal.ROUND_HALF_UP);
		return String.valueOf(big.doubleValue());
	}
	
	public static String setScare(String arg, int scare) {
		BigDecimal big = new BigDecimal(arg);
		return big.setScale(scare, BigDecimal.ROUND_HALF_UP).toString();
	}
	
	public static Double setDouScare(Double arg) {
		BigDecimal big = new BigDecimal(arg);
		return big.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	
	/*
	 * 四舍五入保留两位小数
	 */
	public static String setDouScare(String arg) {
		BigDecimal big = new BigDecimal(arg);
		return big.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
	}
	
	/*
	 * 转换成百分数
	 */
	public static String setFenScare(BigDecimal arg) {
		String big = String.valueOf(arg.setScale(3, BigDecimal.ROUND_HALF_UP));
		String fen = String.valueOf(mul(big, "100").doubleValue());
		return fen + "%";
	} 
	
	/*
	 * 正则表达式去除多余的'.'和0
	 */
	public static String subZeroAndDot(String s) {
		if(s.indexOf(".") > 0) {
			//去除多余的0
			s = s.replace("0+?$", "");
			//最后一位是点则去除
			s = s.replace("[.]$", "");
		}
		return s;
	}
	
}
